//! 测试币本位合约解析
//! 
//! 专门测试币本位合约的字段解析

use binance_sdk_unified::{
    client::BinanceClientBuilder, ProductType, Environment, Result,
};

#[tokio::main]
async fn main() -> Result<()> {
    // 初始化日志
    tracing_subscriber::fmt::init();

    println!("🧪 测试币本位合约字段解析");
    println!("==========================");
    println!("测试币本位合约API的字段兼容性");
    println!();

    // 创建币本位合约客户端
    let client = BinanceClientBuilder::new(
        "demo_api_key".to_string(),
        "demo_secret_key".to_string(),
        ProductType::CoinM,
    )
    .environment(Environment::Demo)
    .timeout(30)
    .retry_count(3)
    .build()?;

    println!("📋 客户端配置:");
    println!("   产品类型: {:?}", ProductType::CoinM);
    println!("   环境: Demo");
    println!("   REST URL: {}", client.config().rest_base_url());

    // 获取交易对列表
    println!("\n📊 获取交易对列表...");
    match client.rest().market().get_exchange_info().await {
        Ok(exchange_info) => {
            println!("   ✅ 交易对数量: {}", exchange_info.symbols.len());
            if !exchange_info.symbols.is_empty() {
                let first_symbol = &exchange_info.symbols[0].symbol;
                println!("   🎯 第一个交易对: {}", first_symbol);
                
                // 测试24小时价格统计
                println!("\n💰 测试24小时价格统计...");
                match client.rest().market().get_24hr_ticker(Some(first_symbol)).await {
                    Ok(ticker) => {
                        println!("   ✅ {} 24小时价格: {}", first_symbol, ticker.last_price);
                        println!("   📊 价格变化: {}", ticker.price_change);
                        println!("   📈 价格变化百分比: {}%", ticker.price_change_percent);
                        println!("   📊 加权平均价格: {}", ticker.weighted_avg_price);
                        println!("   📊 开盘价: {}", ticker.open_price);
                        println!("   📊 最高价: {}", ticker.high_price);
                        println!("   📊 最低价: {}", ticker.low_price);
                        println!("   📊 成交量: {}", ticker.volume);
                        println!("   📊 基础成交量: {}", ticker.base_volume);
                        println!("   📊 报价成交量: {}", ticker.quote_volume);
                        println!("   📊 最后数量: {}", ticker.last_qty);
                        println!("   📊 开盘时间: {}", ticker.open_time);
                        println!("   📊 收盘时间: {}", ticker.close_time);
                        println!("   📊 交易次数: {}", ticker.count);
                    },
                    Err(e) => {
                        println!("   ❌ 24小时价格统计失败: {}", e);
                    }
                }
                
                // 测试最新价格
                println!("\n💲 测试最新价格...");
                match client.rest().market().get_price(Some(first_symbol)).await {
                    Ok(price_info) => {
                        println!("   ✅ {} 最新价格: {}", first_symbol, price_info.price);
                    },
                    Err(e) => {
                        println!("   ❌ 最新价格失败: {}", e);
                    }
                }
            }
        },
        Err(e) => {
            println!("   ❌ 获取交易对信息失败: {}", e);
        }
    }

    println!("\n🎉 币本位合约解析测试完成！");
    println!("================================");
    println!("✅ 已测试币本位合约的字段解析");
    println!("✅ 验证了缺失字段的处理");
    println!("✅ 确认了数组响应的解析");
    
    tracing::info!("[TEST_COINM_PARSING] 测试完成");

    Ok(())
}
